
#include	"SysConfig.h"
#include	"Display.h"
#include	"Define.h"
#include	"Function.h"
#include	"Port.h"
#include	"Key.h"
#include	"Audio.h"
#include	"Model_Option.h"
#ifdef  MIC
#include	"MIC.h"
#endif
#ifdef  AUTO_GUIDE
#include	"AutoGuide.h"
#endif
#ifdef  HEF4052
#include	"HEF_4052.h"
#endif
#ifdef  HERO
#include	"Hero_Drv.h"
#endif
#ifdef  AV_CONTROLLER
#include	"AVController.h"
#endif

unsigned char ucAUDIO_Mute;
unsigned char ucAUDIO_Volume;

unsigned char ucAUDIO_Bass;
unsigned char ucAUDIO_Middle;
unsigned char ucAUDIO_Treble;
unsigned char ucAUDIO_Fader;
unsigned char ucAUDIO_Balance;
UI_EQ_MODE ucAUDIO_Equalizer;
unsigned char ucAUDIO_BeepEnable;
unsigned char ucAUDIO_Loud;
unsigned char ucAUDIO_BeepOut;
unsigned short ucAUDIO_BeepOut_Timer5msec;
unsigned char ucAUDIO_MuteReleaseRequest;
unsigned char ucAUDIO_MuteReleaseRequest_Timer5msec;
unsigned char ucAUDIO_ForceMute;
unsigned char ucAUDIO_TelMute;
unsigned char ucAUDIO_TelMutePort;

#ifdef  LC786XXX_AUDIO

extern unsigned char DRV_LC786XXX_SelectSource(unsigned char ucSource, unsigned char ucMute);
extern unsigned char DRV_LC786XXX_Mute(unsigned char ucMute);
extern unsigned char DRV_LC786XXX_SelectSelectorOutput(void);
extern unsigned char DRV_LC786XXX_WriteEVRGain(unsigned char  Volume, unsigned char Fader, unsigned char Balance);
extern unsigned char DRV_LC786XXX_VOL_ControlCommand(unsigned char ucVol);
extern unsigned char DRV_LC786XXX_BalanceFadeControlCommand(unsigned char ucBalance, unsigned char ucFade);

extern unsigned char DRV_LC786XXX_SelectEQFilter(unsigned char ucLoud, unsigned char ucBass, unsigned char ucMiddle, unsigned char ucTreble, unsigned char ucEQ);
extern unsigned char DRV_LC786XXX_SelectSurroundSystem(unsigned char ucMode, unsigned char ucAtt);
#endif

#ifdef  ATOMIC
extern void ATOMIC_Beep(unsigned char ucDes);
#endif
extern unsigned char PWR_ProcessIsIdle(void);
extern unsigned char ucFUNC_Power;

void AUDIO_EQ_Flat(void)
{
///////// Under is Load From Memory ////////////////
	ucAUDIO_Bass = BASS_DEFAULT;
	ucAUDIO_Middle = MIDDLE_DEFAULT;
	ucAUDIO_Treble = TREBLE_DEFAULT;
	ucAUDIO_Fader = FADER_DEFAULT;
	ucAUDIO_Balance = BALANCE_DEFAULT;
	ucAUDIO_Equalizer = EQ_OFF;
	ucAUDIO_Loud = 0;
}

void AUDIO_VariableInitialize(void)
{
	ucAUDIO_Volume = VOLUME_INIT_VALUE;	
	ucAUDIO_BeepEnable = 1;

///////// Under is Load From Memory ////////////////
	ucAUDIO_Bass = BASS_DEFAULT;
	ucAUDIO_Middle = MIDDLE_DEFAULT;
	ucAUDIO_Treble = TREBLE_DEFAULT;
	ucAUDIO_Fader = FADER_DEFAULT;
	ucAUDIO_Balance = BALANCE_DEFAULT;
	ucAUDIO_Equalizer = EQ_OFF;
	ucAUDIO_Loud = 0;
}

#define	LC786_LOUD_0_5dB		1
#define	LC786_LOUD_3dB		2
#define	LC786_LOUD_4dB			3
#define	LC786_LOUD_4_5dB		4
#define	LC786_LOUD_5dB			5
#define	LC786_LOUD_5_5dB		6
#define	LC786_LOUD_6dB			7
#define	LC786_LOUD_6_5dB		8
#define	LC786_LOUD_7dB			9
#define	LC786_LOUD_7_5dB		10
#define	LC786_LOUD_8dB			11

void AUDIO_SetFilter(void)
{
#ifdef  LC786XXX_AUDIO

	if  (ucAUDIO_Loud == 0)
	{
		DRV_LC786XXX_SelectEQFilter(0, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
		return;
	}

	#if  0
	DRV_LC786XXX_SelectEQFilter(ucAUDIO_Loud, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
	#else
	switch  (ucAUDIO_Volume)
	{
		case 10:
			if  (ucAUDIO_Equalizer == EQ_POP)		// +2dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_7_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  ((ucAUDIO_Equalizer == EQ_ROCK) || (ucAUDIO_Equalizer == EQ_JAZZ))	// +6dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  (ucAUDIO_Equalizer == EQ_COUNTRY)	// +9dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  (ucAUDIO_Equalizer == EQ_CLASSIC)	// +4dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			
			if  (ucAUDIO_Bass == BASS_MAX)		// + 9.XdB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P4)	// +8dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P3)	// +6dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P2)	// +4dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P1)	// +2dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_7_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_8dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			break;
		case 11:			
			if  (ucAUDIO_Equalizer == EQ_POP)		// +2dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_7_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  ((ucAUDIO_Equalizer == EQ_ROCK) || (ucAUDIO_Equalizer == EQ_JAZZ))	// +6dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  (ucAUDIO_Equalizer == EQ_COUNTRY)	// +9dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  (ucAUDIO_Equalizer == EQ_CLASSIC)	// +4dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			
			if  (ucAUDIO_Bass == BASS_MAX)		// + 9.XdB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P4)	// +8dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P3)	// +6dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P2)	// +4dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P1)	// +2dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_7_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_7_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			break;
		case 12:
			if  (ucAUDIO_Equalizer == EQ_POP)		// +2dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_7dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  ((ucAUDIO_Equalizer == EQ_ROCK) || (ucAUDIO_Equalizer == EQ_JAZZ))	// +6dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  (ucAUDIO_Equalizer == EQ_COUNTRY)	// +9dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  (ucAUDIO_Equalizer == EQ_CLASSIC)	// +4dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			
			if  (ucAUDIO_Bass == BASS_MAX)		// + 9.XdB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P4)	// +8dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P3)	// +6dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P2)	// +4dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P1)	// +2dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_7dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_7dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			break;
		case 13:
			if  (ucAUDIO_Equalizer == EQ_POP)		// +2dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_6_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  ((ucAUDIO_Equalizer == EQ_ROCK) || (ucAUDIO_Equalizer == EQ_JAZZ))	// +6dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  (ucAUDIO_Equalizer == EQ_COUNTRY)	// +9dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  (ucAUDIO_Equalizer == EQ_CLASSIC)	// +4dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			
			if  (ucAUDIO_Bass == BASS_MAX)		// + 9.XdB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P4)	// +8dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P3)	// +6dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P2)	// +4dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P1)	// +2dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_6_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_6_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			break;
		case 14:
			if  (ucAUDIO_Equalizer == EQ_POP)		// +2dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_6dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  ((ucAUDIO_Equalizer == EQ_ROCK) || (ucAUDIO_Equalizer == EQ_JAZZ))	// +6dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  (ucAUDIO_Equalizer == EQ_COUNTRY)	// +9dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  (ucAUDIO_Equalizer == EQ_CLASSIC)	// +4dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			
			if  (ucAUDIO_Bass == BASS_MAX)		// + 9.XdB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P4)	// +8dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P3)	// +6dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P2)	// +4dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P1)	// +2dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_6dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_6dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			break;
		case 15:
			if  (ucAUDIO_Equalizer == EQ_POP)		// +2dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  ((ucAUDIO_Equalizer == EQ_ROCK) || (ucAUDIO_Equalizer == EQ_JAZZ))	// +6dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  (ucAUDIO_Equalizer == EQ_COUNTRY)	// +9dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  (ucAUDIO_Equalizer == EQ_CLASSIC)	// +4dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			
			if  (ucAUDIO_Bass == BASS_MAX)		// + 9.XdB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P4)	// +8dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P3)	// +6dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P2)	// +4dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P1)	// +2dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			break;
		case 16:
			if  (ucAUDIO_Equalizer == EQ_POP)		// +2dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  ((ucAUDIO_Equalizer == EQ_ROCK) || (ucAUDIO_Equalizer == EQ_JAZZ))	// +6dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  (ucAUDIO_Equalizer == EQ_COUNTRY)	// +9dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  (ucAUDIO_Equalizer == EQ_CLASSIC)	// +4dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			
			if  (ucAUDIO_Bass == BASS_MAX)		// + 9.XdB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P4)	// +8dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P3)	// +6dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P2)	// +4dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P1)	// +2dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			break;
		case 17:
			if  (ucAUDIO_Equalizer == EQ_POP)		// +2dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_4_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  ((ucAUDIO_Equalizer == EQ_ROCK) || (ucAUDIO_Equalizer == EQ_JAZZ))	// +6dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  (ucAUDIO_Equalizer == EQ_COUNTRY)	// +9dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			if  (ucAUDIO_Equalizer == EQ_CLASSIC)	// +4dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				return;
			}
			
			if  (ucAUDIO_Bass == BASS_MAX)		// + 9.XdB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P4)	// +8dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P3)	// +6dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P2)	// +4dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_4_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else  if  (ucAUDIO_Bass == BASS_P1)	// +2dB
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_4_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			else
			{
				DRV_LC786XXX_SelectEQFilter(LC786_LOUD_4_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
			}
			break;
		default:
			if  (ucAUDIO_Volume < 10)
			{
				if  (ucAUDIO_Equalizer == EQ_POP)		// +2dB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_7_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
					return;
				}
				if  ((ucAUDIO_Equalizer == EQ_ROCK) || (ucAUDIO_Equalizer == EQ_JAZZ))	// +6dB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
					return;
				}
				if  (ucAUDIO_Equalizer == EQ_COUNTRY)	// +9dB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
					return;
				}
				if  (ucAUDIO_Equalizer == EQ_CLASSIC)	// +4dB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
					return;
				}
				
				if  (ucAUDIO_Bass == BASS_MAX)		// + 9.XdB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				}
				else  if  (ucAUDIO_Bass == BASS_P4)	// +8dB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				}
				else  if  (ucAUDIO_Bass == BASS_P3)	// +6dB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				}
				else  if  (ucAUDIO_Bass == BASS_P2)	// +4dB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_5_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				}
				else  if  (ucAUDIO_Bass == BASS_P1)	// +2dB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_7_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				}
				else
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_8dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				}
			}
			if  (ucAUDIO_Volume > 17)
			{
				
				if  (ucAUDIO_Equalizer == EQ_POP)		// +2dB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_4dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
					return;
				}
				if  ((ucAUDIO_Equalizer == EQ_ROCK) || (ucAUDIO_Equalizer == EQ_JAZZ))	// +6dB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
					return;
				}
				if  (ucAUDIO_Equalizer == EQ_COUNTRY)	// +9dB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
					return;
				}
				if  (ucAUDIO_Equalizer == EQ_CLASSIC)	// +4dB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_4dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
					return;
				}
				
				if  (ucAUDIO_Bass == BASS_MAX)		// + 9.XdB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				}
				else  if  (ucAUDIO_Bass == BASS_P4)	// +8dB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_0_5dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				}
				else  if  (ucAUDIO_Bass == BASS_P3)	// +6dB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_3dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				}
				else  if  (ucAUDIO_Bass == BASS_P2)	// +4dB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_4dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				}
				else  if  (ucAUDIO_Bass == BASS_P1)	// +2dB
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_4dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				}
				else
				{
					DRV_LC786XXX_SelectEQFilter(LC786_LOUD_4dB, ucAUDIO_Bass, ucAUDIO_Middle, ucAUDIO_Treble, ucAUDIO_Equalizer);
				}
			}
			break;
			
	}
	#endif
#endif
}

void AUDIO_InputSelect(UI_FUNCTION ucFunc)
{
#ifdef  HERO

#ifdef	AUTO_GUIDE
	if  (AG_GetAnnounceStatus() == AG_ANNOUNCE_ON)
	{
		HERO_SetInput(0x01);
	#ifdef	HEF4052
		HEF4052_SelectSource(AUDIO_INPUT_AG);
	#endif
		return;
	}
#endif

	switch  (ucFunc)
	{
		case FUNC_TUNER:
			HERO_SetInput(0x00);
			LOG_AUDIO("AUDIO_InputSelect:TUNER");
			break;
		case FUNC_AUX:
			HERO_SetInput(0x02);
			LOG_AUDIO("AUDIO_InputSelect:AUX");
			break;
		case FUNC_USB:
		#ifdef  HEF4052
			HEF4052_SelectSource(AUDIO_INPUT_INTERNAL);
		#endif
			HERO_SetInput(0x01);
			LOG_AUDIO("AUDIO_InputSelect:USB");
			break;
	#ifdef  CD
		case FUNC_CD:
		#ifdef  HEF4052
			HEF4052_SelectSource(AUDIO_INPUT_INTERNAL);
		#endif
			HERO_SetInput(0x01);
			LOG_AUDIO("AUDIO_InputSelect:CD");
			break;
	#endif
	#ifdef  BLUETOOTH
		case FUNC_LPB:
			HERO_SetInput(0x05);
			LOG_AUDIO("AUDIO_InputSelect:LPB");
			break;
		case FUNC_HF:
			HERO_SetInput(0x05);
			LOG_AUDIO("AUDIO_InputSelect:HF");
			break;
		case FUNC_A2DP:
			HERO_SetInput(0x05);
			LOG_AUDIO("AUDIO_InputSelect:A2DP");
			break;
	#endif
	#ifdef  AV_CONTROLLER
		case FUNC_AVC_MODE:
			HERO_SetInput(0x01);
		#ifdef  HEF4052
			HEF4052_SelectSource(AUDIO_INPUT_MODE);
		#endif
			LOG_AUDIO("AUDIO_InputSelect:MODE");
			break;
	#endif
//	#ifdef  AUTO_GUIDE
//		case FUNC_AUTOGUIDE:
//			HERO_SetInput(0x01);
//		#ifdef  HEF4052
//			HEF4052_SelectSource(AUDIO_INPUT_AG);
//		#endif
//			LOG_AUDIO("AUDIO_InputSelect:AG");
//			break;
//	#endif
	}
#endif
#ifdef  LC786XXX_AUDIO
	switch  (ucFunc)
	{
		case FUNC_TUNER:
			DRV_LC786XXX_SelectSource(0x01, 1);		// AN-1
			break;
		case FUNC_AUX:
			DRV_LC786XXX_SelectSource(0x02, 1);		// AN - 2
			break;
		case FUNC_USB:
			DRV_LC786XXX_SelectSource(0x00, 1);
			break;
	#ifdef  CD
		case FUNC_CD:
			DRV_LC786XXX_SelectSource(0x00, 1);
			break;
	#endif
	#ifdef  BLUETOOTH
		case FUNC_HF:
			DRV_LC786XXX_SelectSource(0x00, 1);
			break;
		case FUNC_A2DP:
			DRV_LC786XXX_SelectSource(0x00, 1);
			break;
	#endif
	}

	AUDIO_SetFilter();
#endif
}

void AUDIO_MuteOn(void)
{
	PO_MUTE = 1;
	LOG_AUDIO("AUDIO_MuteOn");

//	if  (OPT_GetOption(OPT_MASK_AVC))
//	{
//		HERO_SetMute(1);
//	}
}

void AUDIO_MuteOff(void)
{
	if  ((ucAUDIO_ForceMute == 1) || (ucAUDIO_TelMute == 1))
	{
		return;
	}
	PO_MUTE = 0;
	LOG_AUDIO("AUDIO_MuteOff");
	
//	if  (OPT_GetOption(OPT_MASK_AVC))
//	{
//		HERO_SetMute(0);
//	}
}

void AUDIO_MuteRelease(void)
{
	if  (ucAUDIO_Volume == 0)
	{
		return;
	}
	AUDIO_MuteOff();
}

void AUDIO_SetForceMute(unsigned char ucDes)
{
	if  (ucDes == 1)
	{
		PO_MUTE = 1;
	#ifdef  HERO
		HERO_SetMute(1);
	#endif
		ucAUDIO_ForceMute = 1;
	}
	else
	{
		if  (ucAUDIO_ForceMute == 1)
		{
			ucAUDIO_ForceMute = 0;
			AUDIO_MuteRelease();
		#ifdef  HERO
			HERO_SetMute(0);
		#endif
		}
	}
}

unsigned char AUDIO_ForceMuteStatus(void)
{
	return(ucAUDIO_ForceMute);
}

/*//////////////////////////////////////////////////////////////////
Title : void AUDIO_Mute(unsigned char ucDes)
ucDes :
	0 : Mute Off
	1 : Mute On
	2 : Mute Toggle
	3 : Only Clear Mute Flag
	4 : Mute release by request
	5 : Force Mute Release, don't care mute flag
	6 : Force Mute On, Clear Mute Flag
Return :
	0 : Play
	1 : Pause
///////////////////////////////////////////////////////////////////*/
void AUDIO_SetMute(unsigned char ucDes)
{
	switch  (ucDes)
	{
		case 0:
			if  (ucAUDIO_Mute == 1)
			{
				ucAUDIO_Mute = 0;
			#ifdef  HERO
				HERO_SetMute(0);
			#endif
			#ifdef  LC786XXX_AUDIO
				DRV_LC786XXX_Mute(0);
			#endif
			}
			break;
		case 1:
			if  (ucAUDIO_Mute == 0)
			{
				ucAUDIO_Mute = 1;
			#ifdef  HERO
				HERO_SetMute(1);
			#endif
			#ifdef	LC786XXX_AUDIO
				DRV_LC786XXX_Mute(1);
			#endif
			}
			break;
		case 2:
			if  (ucAUDIO_Mute == 1)
			{
				ucAUDIO_Mute = 0;	// Mute Off
			#ifdef  HERO
				HERO_SetMute(0);
			#endif
			#ifdef  LC786XXX_AUDIO
				DRV_LC786XXX_Mute(0);
			#endif
			}
			else
			{
				ucAUDIO_Mute = 1;	// Mute On
			#ifdef  HERO
				HERO_SetMute(1);
			#endif
			#ifdef	LC786XXX_AUDIO
				DRV_LC786XXX_Mute(1);
			#endif
			}
			break;
		case 3:
			ucAUDIO_Mute = 0;
			ucAUDIO_MuteReleaseRequest = 1;
			break;
		case 4:
			if  ((ucAUDIO_MuteReleaseRequest == 1) && (ucAUDIO_Mute == 0))
			{
			#ifdef  HERO
				HERO_SetMute(0);
			#endif
			#ifdef  LC786XXX_AUDIO
				DRV_LC786XXX_Mute(0);
			#endif
			}
			ucAUDIO_MuteReleaseRequest = 0;
			break;
		case 5:
			ucAUDIO_Mute = 0;	// Mute Off
		#ifdef  HERO
			HERO_SetMute(0);
		#endif
		#ifdef  LC786XXX_AUDIO		
			DRV_LC786XXX_Mute(0);
		#endif
			break;
		case 6:
		#ifdef  HERO
			HERO_SetMute(1);
		#endif
		#ifdef	LC786XXX_AUDIO
			DRV_LC786XXX_Mute(1);
		#endif
			ucAUDIO_Mute = 0;
			ucAUDIO_MuteReleaseRequest = 0;
			break;
	}
}

unsigned short usAUDIO_TelMute_Timer100msec;

void AUDIO_TelMute(void)
{
#if  0
	if  (PWR_ProcessIsIdle())
	{
		if  (usAUDIO_TelMute_Timer100msec != 0)
		{
			return;
		}
		if	(ucAUDIO_TelMutePort != PI_TEL_MUTE)
		{
			ucAUDIO_TelMutePort = PI_TEL_MUTE;
			return;
		}
		
		if	(ucAUDIO_TelMutePort == 0)
		{
			if	(ucAUDIO_TelMute == 0)
			{
				ucAUDIO_TelMute = 1;
				PO_MUTE = 1;
			}
		}
		else
		{
			if	(ucAUDIO_TelMute == 1)
			{
				ucAUDIO_TelMute = 0;
				
				if  ((ucFUNC_Power == 1) && (ucFUNC_FunctionSeq == FUNC_SEQ_NONE))
				{
					AUDIO_MuteRelease();
				}
			}
		}
	}
	else
	{
		usAUDIO_TelMute_Timer100msec = 1000/100;
	}
#endif
}

void AUDIO_VolumeInit(void)	// used after ACC On
{
	if  (ucAUDIO_Volume > VOLUME_INIT_VALUE)
	{
		ucAUDIO_Volume = VOLUME_INIT_VALUE;
	}
}

void AUDIO_SetVolume(void)
{
	#ifdef  HERO
	LOG_SYS("AUDIO_VolumeChange:%d",ucAUDIO_Volume);
	HERO_SetVolume(ucAUDIO_Volume);
	#endif
	#ifdef  LC786XXX_AUDIO
//	DRV_LC786XXX_VOL_ControlCommand(ucAUDIO_Volume);
	DRV_LC786XXX_WriteEVRGain(ucAUDIO_Volume, ucAUDIO_Fader, ucAUDIO_Balance);
	#endif
}

void AUDIO_VolumeChange(unsigned char ucDes)
{
	unsigned char ucVol;
	unsigned char ucLoudChange = 0;
	
	if  (ucDes == 1)
	{
		if  (++ucAUDIO_Volume > VOLUME_MAX)
		{
			ucAUDIO_Volume = VOLUME_MAX;
		}
	}
	else
	{
		if  (ucAUDIO_Volume != 0)
		{
			--ucAUDIO_Volume;
		}
	}

	if  (ucAUDIO_Loud == 1)
	{
		switch  (ucAUDIO_Volume)
		{
			case 10:
			case 11:
			case 12:
			case 13:
			case 14:
			case 15:
			case 16:
			case 17:
			case 18:
				ucLoudChange = 1;
				break;
				
		}
	}

	DISP_SetTempDisplayMode(DISP_VOLUME);
	
	#ifdef  HERO
	LOG_SYS("AUDIO_VolumeChange:%d",ucAUDIO_Volume);
	HERO_SetVolume(ucAUDIO_Volume);
	#endif
	#ifdef  LC786XXX_AUDIO
//	DRV_LC786XXX_VOL_ControlCommand(ucAUDIO_Volume);
	DRV_LC786XXX_WriteEVRGain(ucAUDIO_Volume, ucAUDIO_Fader, ucAUDIO_Balance);
	if  (ucLoudChange == 1)
	{
		AUDIO_SetFilter();
	}
	#endif
}

void AUDIO_ChangeBass(unsigned char ucDes)
{
	unsigned char ucStep;
	
	if  (ucDes == 1)
	{
		if  (++ucAUDIO_Bass > BASS_MAX)
		{
			ucAUDIO_Bass = BASS_MAX;
		}
	}
	else
	{
		if  (ucAUDIO_Bass == BASS_MIN)
		{
		}
		else
		{
			--ucAUDIO_Bass;
		}
	}
	ucAUDIO_Equalizer = EQ_OFF;
#ifdef  HERO
	ucStep = ucAUDIO_Bass * 2 + 2;
	HERO_SetBass(ucStep);
#endif
#ifdef  LC786XXX_AUDIO
	AUDIO_SetFilter();
#endif
}

void AUDIO_ChangeMiddle(unsigned char ucDes)
{
	unsigned char ucStep;
	
	if  (ucDes == 1)
	{
		if  (++ucAUDIO_Middle > MIDDLE_MAX)
		{
			ucAUDIO_Middle = MIDDLE_MAX;
		}
	}
	else
	{
		if  (ucAUDIO_Middle == MIDDLE_MIN)
		{
		}
		else
		{
			--ucAUDIO_Middle;
		}
	}
	ucAUDIO_Equalizer = EQ_OFF;
#ifdef  HERO
	ucStep = ucAUDIO_Middle * 2 + 2;
	HERO_SetMid(ucStep);
#endif
#ifdef  LC786XXX_AUDIO
	AUDIO_SetFilter();
#endif
}

void AUDIO_ChangeTreble(unsigned char ucDes)
{
	unsigned char ucStep;
	
	if  (ucDes == 1)
	{
		if  (++ucAUDIO_Treble > TREBLE_MAX)
		{
			ucAUDIO_Treble = TREBLE_MAX;
		}
	}
	else
	{
		if  (ucAUDIO_Treble != TREBLE_MIN)
		{
			--ucAUDIO_Treble;
		}
	}
	ucAUDIO_Equalizer = EQ_OFF;
#ifdef  HERO
	ucStep = ucAUDIO_Treble * 2 + 2;
	HERO_SetTreble(ucStep);
#endif
#ifdef  LC786XXX_AUDIO
	AUDIO_SetFilter();
#endif
}

void AUDIO_ChangeFader(unsigned char ucDes)
{
	if  (ucDes == 1)
	{
		if  (++ucAUDIO_Fader > FADER_MAX)
		{
			ucAUDIO_Fader = FADER_MAX;
		}
	}
	else
	{
		if  (ucAUDIO_Fader != FADER_MIN)
		{
			--ucAUDIO_Fader;
		}
	}
#ifdef  DRV_SPK
	if  (AUDIO_GetSpeakerMode() == DSPK_ALL)
#endif
	{	
	#ifdef  HERO
		HERO_SetFader(ucAUDIO_Fader);
	#endif
	#ifdef  LC786XXX_AUDIO
	//	DRV_LC786XXX_WriteEVRGain(ucAUDIO_Fader, ucAUDIO_Balance);
	//	DRV_LC786XXX_BalanceFadeControlCommand(ucAUDIO_Balance, ucAUDIO_Fader);	
		DRV_LC786XXX_WriteEVRGain(ucAUDIO_Volume, ucAUDIO_Fader, ucAUDIO_Balance);
	#endif
	}
}

void AUDIO_ChangeBalance(unsigned char ucDes)
{
	if  (ucDes == 1)
	{
		if  (++ucAUDIO_Balance > BALANCE_MAX)
		{
			ucAUDIO_Balance = BALANCE_MAX;
		}
	}
	else
	{
		if  (ucAUDIO_Balance != BALANCE_MIN)
		{
			--ucAUDIO_Balance;
		}
	}
#ifdef  HERO
	HERO_SetBalance(ucAUDIO_Balance);
#endif
#ifdef  LC786XXX_AUDIO
//	DRV_LC786XXX_WriteEVRGain(ucAUDIO_Fader, ucAUDIO_Balance);
//	DRV_LC786XXX_BalanceFadeControlCommand(ucAUDIO_Balance, ucAUDIO_Fader)	
	DRV_LC786XXX_WriteEVRGain(ucAUDIO_Volume, ucAUDIO_Fader, ucAUDIO_Balance);;
#endif
}

void AUDIO_ChangeEqualizer(unsigned char ucDes)
{
	unsigned char ucStep;	

	if  (ucDes == 1)
	{
		if  (++ucAUDIO_Equalizer > EQ_CLASSIC)
		{
			ucAUDIO_Equalizer = EQ_OFF;
		}
	}
	else
	{
		if  (ucAUDIO_Equalizer == EQ_OFF)
		{
			ucAUDIO_Equalizer = EQ_CLASSIC;
		}
		else
		{
			--ucAUDIO_Equalizer;
		}
	}

#ifdef  HERO
	HERO_SetEqualizer(ucAUDIO_Equalizer); 
#endif
#ifdef  LC786XXX_AUDIO
	AUDIO_SetFilter();
#endif
}

void AUDIO_ChangeBeepMode(void)
{
	if  (ucAUDIO_BeepEnable == 1)
	{
		ucAUDIO_BeepEnable = 0;
	}
	else
	{
		ucAUDIO_BeepEnable = 1;
	}
}

void AUDIO_ChangeLoud(void)
{
	if  (ucAUDIO_Loud == 0)
	{
		ucAUDIO_Loud = 1;
	}
	else
	{
		ucAUDIO_Loud = 0;
	}
#ifdef  HERO
	if  (ucAUDIO_Loud == 1)
	{
		HERO_SetLoud(1);
		HERO_SetVolume(ucAUDIO_Volume);
	}
	else
	{
		HERO_SetLoud(0);
	}
#endif
#ifdef  LC786XXX_AUDIO
	AUDIO_SetFilter();
#endif
}

#ifdef  DRV_SPK

AUDIO_DSPK_MODE	ucAUDIO_DSPK_Mode;

AUDIO_DSPK_MODE	AUDIO_GetSpeakerMode(void)
{
	return(ucAUDIO_DSPK_Mode);
}

void AUDIO_SetSpeaker(void)
{	
#if  1
	if  (OPT_GetOption(OPT_MASK_AVC))
	{
//		switch  (AVC_GetDriverSpeakerMode())
//		{
//			case AVC_DRV_ON:
//				HERO_SetFrontMute(0);
//				HERO_SetRearMute(0);
//				break;
//			case AVC_DRV_OFF:
//				HERO_SetFrontMute(1);
//				HERO_SetRearMute(0);
//				break;
//		}
	}
	else
	{
		switch  (AUDIO_GetSpeakerMode())
		{
			case DSPK_ALL:			
				HERO_SetFrontMute(0);
				HERO_SetRearMute(0);
				HERO_SetFader(ucAUDIO_Fader);
				break;
			case DSPK_DRIVER:
				HERO_SetFrontMute(0);
				HERO_SetRearMute(1);
				HERO_SetFader(FADER_DEFAULT);
				break;
			case DSPK_PSG:
				HERO_SetFrontMute(1);
				HERO_SetRearMute(0);
				HERO_SetFader(FADER_DEFAULT);
				break;
		}
	}
#endif
}

void AUDIO_ChangeSpeaker(void)
{
	switch  (AUDIO_GetSpeakerMode())
	{
		case DSPK_ALL:
			ucAUDIO_DSPK_Mode = DSPK_DRIVER;
//			DISP_SetTempDisplayMode_3Sec(DISP_SP_DRV);
			break;
		case DSPK_DRIVER:
			ucAUDIO_DSPK_Mode = DSPK_PSG;
//			DISP_SetTempDisplayMode_3Sec(DISP_SP_PSG);
			break;
		case DSPK_PSG:
			ucAUDIO_DSPK_Mode = DSPK_ALL;
//			DISP_SetTempDisplayMode_3Sec(DISP_SP_ALL);
			break;
	}

	AUDIO_SetSpeaker();
}
#endif

void AUDIO_SetAudio(void)
{
#ifdef  HERO
	unsigned char ucStep;

	if  (ucAUDIO_Loud == 1)
	{
		HERO_SetLoud(1);
	}
	else
	{
		HERO_SetLoud(0);
	}
	HERO_SetVolume(ucAUDIO_Volume);

	ucStep = ucAUDIO_Bass * 2 + 2;
	HERO_SetBass(ucStep);
	
	ucStep = ucAUDIO_Treble * 2 + 2;
	HERO_SetTreble(ucStep);

	ucStep = ucAUDIO_Middle * 2 + 2;
	HERO_SetMid(ucStep);
	
	HERO_SetFader(ucAUDIO_Fader);
	HERO_SetBalance(ucAUDIO_Balance);
#ifdef  DRV_SPK
	AUDIO_SetSpeaker();
#endif
#endif

#ifdef  LC786XXX_AUDIO
//	DRV_LC786XXX_VOL_ControlCommand(ucAUDIO_Volume);
	DRV_LC786XXX_SelectSurroundSystem(0x00, 0x7F);//0x29);		// -10dB 29
	DRV_LC786XXX_SelectSurroundSystem(0x01, 0x00);
	DRV_LC786XXX_WriteEVRGain(ucAUDIO_Volume, ucAUDIO_Fader, ucAUDIO_Balance);
	AUDIO_SetFilter();
#endif

}

void AUDIO_BeepOutStop(void)
{
#ifndef  ATOMIC
	if  ((ucAUDIO_BeepOut == 1) && (ucAUDIO_BeepOut_Timer5msec == 0))
	{
		ucAUDIO_BeepOut = 0;
	}
#endif
}

void AUDIO_BeepOutStart(void)
{
	if  (ucAUDIO_BeepEnable == 0)
	{
		return;
	}
	
	#ifdef  ATOMIC
	////////////////////////
	ucAUDIO_BeepOut_Timer5msec = 100/5;//200/5;
	ta2s = 1;
	#else
	HERO_Beep();
	#endif
	ucAUDIO_BeepOut = 1;
}

